package fiuba.algo3.vista;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

import fiuba.algo3.controlador.Controlador;
import fiuba.algo3.controlador.ControladorFlechitas;
import fiuba.algo3.juego.JuegoGPS;
import fiuba.algo3.partida.Partida;

public class VentanaEleccionPartidasGuardadas implements ActionListener {

	private JFrame miFrame;
	private JuegoGPS miJuego;
	private LinkedList<JButton> botonesPartidas;
	private JButton volver;
	private LinkedList<Partida> partidas;

	VentanaEleccionPartidasGuardadas(JuegoGPS unJuego, JFrame frame) {

		this.miFrame = frame;
		this.miJuego = unJuego;

		botonesPartidas = new LinkedList<JButton>();
		partidas = new LinkedList<Partida>();
		
		SAXBuilder builder = new SAXBuilder();
		File xmlFile = new File("miPartida.xml");
		
		Document document = null;
		Element rootNode = null;
		
		try {

			document = (Document) builder.build(xmlFile);
			rootNode = document.getRootElement();

			} catch (IOException io) {
				System.out.println(io.getMessage());
			} catch (JDOMException jdomex) {
				System.out.println(jdomex.getMessage());
			}
		
		JPanel contentPane = new JPanel();
		miFrame.setContentPane(contentPane);
		contentPane.setLayout(null);
		
		List<Element> listaNodos = rootNode.getChildren();
		for(int i = 0, j = 0; i < listaNodos.size(); i++){
			Partida miPartida = new Partida(listaNodos.get(i));
			if(miPartida.getUsuarioActual().equals(miJuego.getUsuarioActual())){
				JButton boton = new JButton(listaNodos.get(i).getAttributeValue("nombrePartida"));
				boton.setBounds((j / 10) * 160 + 25,((j % 10) * 30) + 100, 150, 25);
				boton.addActionListener(this);
				botonesPartidas.add(boton);
				contentPane.add(boton);
				partidas.add(miPartida);
				j++;
			}
				
		}
	
		
		
		volver = new JButton("Volver");
		volver.setBounds(800, 500, 75, 25);
		volver.addActionListener(this);
		contentPane.add(volver);

		JLabel titulo = new JLabel("Partidas guardadas del usuario: " + miJuego.getUsuarioActual());
		titulo.setBounds(275, 50, 500, 25);
		contentPane.add(titulo);

		this.miFrame.paintComponents(miFrame.getGraphics());
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == volver) {
			new VentanaMenuDelJuego(miJuego, miFrame);
		}

		for (int i = 0; i < partidas.size() ; i++) {
			if (e.getSource() == botonesPartidas.get(i)) {
				miJuego.setPartida(partidas.get(i));
				new VistaJuego(miJuego, new Controlador(miJuego),miFrame, new ControladorFlechitas(miJuego));
				System.out.println("Cargando partida");
			}
		}
	}

}